package com.vote.business.mapper;

import java.util.List;
import com.vote.business.domain.UserVoteRecord;
import com.vote.business.domain.vo.UserVoteRecordVO;

/**
 * 用户投票记录Mapper接口
 * 
 * @author ruoyi
 * @date 2025-07-14
 */
public interface UserVoteRecordMapper 
{
    /**
     * 查询用户投票记录
     * 
     * @param recordId 用户投票记录主键
     * @return 用户投票记录
     */
    public UserVoteRecord selectUserVoteRecordByRecordId(Long recordId);

    /**
     * 查询用户投票记录列表
     * 
     * @param userVoteRecord 用户投票记录
     * @return 用户投票记录集合
     */
    public List<UserVoteRecord> selectUserVoteRecordList(UserVoteRecord userVoteRecord);

    /**
     * 新增用户投票记录
     * 
     * @param userVoteRecord 用户投票记录
     * @return 结果
     */
    public int insertUserVoteRecord(UserVoteRecord userVoteRecord);

    /**
     * 修改用户投票记录
     * 
     * @param userVoteRecord 用户投票记录
     * @return 结果
     */
    public int updateUserVoteRecord(UserVoteRecord userVoteRecord);

    /**
     * 删除用户投票记录
     * 
     * @param recordId 用户投票记录主键
     * @return 结果
     */
    public int deleteUserVoteRecordByRecordId(Long recordId);

    /**
     * 批量删除用户投票记录
     * 
     * @param recordIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteUserVoteRecordByRecordIds(Long[] recordIds);
    /**
     * 查询用户投票记录列表（带关联信息）
     * @param record 查询条件
     * @return 投票记录列表
     */
   public List<UserVoteRecordVO> selectUserVoteRecordDtoList(UserVoteRecordVO record);

    /**
     * 获取投片记录信息
     * @param recordId
     * @return
     */
    public UserVoteRecordVO selectUserVoteRecordDtoById(Long recordId);

    /**
     * 获取投片记录信息
     * @param userVoteRecordVO
     * @return
     */
    public UserVoteRecordVO selectUserVoteRecordDtoByUId(UserVoteRecordVO userVoteRecordVO);
    /**
     * 判断是否已经投票
     * @param voteId
     * @param userId
     * @return
     */
   public  int judgeVoted(Long voteId, Long userId);

    /***
     * 查询参与人数（去重统计用户ID
     * @param userId
     * @return
     */
    public int selectParticipantCount(Long voteId);

    /***
     * 查询总票数
     * @param voteId
     * @return
     */
    public int selectTotalVotes(Long voteId);
}
